Logseq Vim Shortcuts 插件发布
· 阅读需 15 分钟
图片与正文无关
这个插件提供了一些快捷键,让 Logseq 有了类似 VIM 的操作体验。
支持的快捷键
j:移动到下一行。在可视块模式下,用于向下选择。k:移动到上一行。在可视块模式下,用于向上选择。h:将焦点移至父级。l:将焦点移至子级。J:移动到下一个兄弟节点。在可视块模式下,用于向下移动。K:移动到上一个兄弟节点。在可视块模式下,用于向上移动。H:减少缩进。L:增加缩进。a和A:将光标移至行尾并进入编辑模式。i和I:将光标移至行首并进入编辑模式。yy:复制当前块的内容。仅支持一个块——复制多个块请使用cmd+c。Y:复制当前块的引用。p:将剪贴板内容粘贴到下一个兄弟节点。仅支持一个块——粘贴多个块请使用cmd+v。P:将剪贴板内容粘贴到上一个兄弟节点。仅支持一个块——粘贴多个块请使用cmd+v。o:在下一个兄弟节点插入一个空块。O:在上一个兄弟节点插入一个空块。dd:删除当前块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。dj:删除当前块和下一个块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。dk:删除当前块和上一个块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。T:滚动到顶部,因为 Logseq 使用gg跳转到图视图。G:滚动到底部。u:撤销。ctrl+r:重做。gu:将块内容转换为小写。gU:将块内容转换为大写。mod+shift+u:在小写和大写之间切换块内容。NUMBER+mod+shift+u:触发不同的大小写风格,支持 1–16。zo:展开块。zc:折叠块。zO:分层展开块。zC:分层折叠块。NUMBER+m:将当前页面或块保存到NUMBER寄存器。NUMBER+':在主区域加载保存的标记。NUMBER+mod+':在右侧边栏加载保存的标记。cmd+j cmd+j:退出编辑模式。ctrl+[也有相同的效果。mod+alt+j:合并下一个兄弟块。mod+shift+enter:跳转到内部页面或标签。mod+shift+;和mod+alt+;:触发命令模式。这提供了许多方便使用的命令,具体如下所述。ctrl+a:增加块中第一个出现的数字。支持多选和组合操作。ctrl+x:减少块中第一个出现的数字。支持多选和组合操作。x:剪切开头的字符。支持多选。X:剪切开头的单词。支持多选。/:在下方的页面栏中触发搜索。支持智能大小写匹配。n:搜索下一个匹配项。N:搜索上一个匹配项。sb:在百度中搜索块内容。se:在维基百科中搜索块内容。sg:在谷歌中搜索块内容。sh:在 GitHub 中搜索块内容。ss:在 Stackoverflow 中搜索块内容。sy:在 Youtube 中搜索块内容。ctrl+v:切换可视块模式。mod+/:触发表情符号选择界面。
模式
普通模式
一个块被聚焦/高亮。
插入模式
你可以编辑一个块。
可视块模式
你可以向上和向下选择更多块,并使用 j 和 k 移动选中的块。
命令模式
在 VIM 中,这个模式可以通过 : 触发,但在这里,快捷键是 mod+shift+;,也可以记作 mod+:。触发后,你可以在底部找到一个输入区域,就像在 VIM 中一样输入一些命令。目前大约有 10 多个命令,但相信未来会有更多。
注意:在 Windows 上,触发键是 ctrl+alt+;。
底部输入框功能
- 输入时提供自动建议。
- 如果只有一个命令匹配,按下
Tab将立即自动完成匹配的命令。 - 按下
Up和Down浏览命令历史记录,这是一个限制为 1000 条的历史记录,我认为这已经足够使用了。 - 按下
Esc关闭命令模式并返回主窗口。目前 Logseq 有时无法自动获取焦点,因此你需要点击主窗口以继续操作。 - 如果遇到卡顿,右下角的
Run按钮和Close按钮可以帮助你触发操作。
支持的命令
:NUMBER:滚动到特定行,或者:-NUMBER滚动到页面末尾的特定行,或者:.NUMBER表示滚动到页面的 NUMBER * 100% 处。:s/和:substitute/:根据正则表达式替换当前块的内容,例如s/foo/bar/gi,注意它支持正则修饰符。:%s/和:%substitute/:根据正则表达式替换当前页面的块,例如%s/foo/bar/gi。:marks:显示标记。:delm和:delmarks:删除特定的标记 ID,例如:delm 1 2 3。:delm!和:delmarks!:删除所有标记。:m和:mark:跳转到特定的标记,例如:m 1。:go:跳转到已存在的页面或块,例如:go 2022-02-22或:go ((6219c981-256a-4464-bc62-4ecfab4c2141))。- 页面名称有一些快捷方式:
:go @和:go @index:跳转到目录页面。:go @today:跳转到今天的日志页面。:go @yesterday:跳转到昨天的日志页面。:go @tomorrow:跳转到明天的日志页面。:go @prev:跳转到前一天的日志页面,如果当前页面不是日志页面,则回退到 @yesterday。:go @next:跳转到下一天的日志页面,如果当前页面不是日志页面,则回退到 @tomorrow。:go @back:跳转到后退页面。:go @forward:跳转到前进页面。
:go!:跳转到已存在的页面或块,如果页面不存在则创建一个,例如:go 2022-02-22或:go ((6219c981-256a-4464-bc62-4ecfab4c2141))。:go!和:go支持--ns和--namespace,用于跳转或创建命名空间页面。例如,你在test页面上运行命令:go! subpage --ns,则会被重定向到test/subpage,从而节省输入前缀字符的时间。
- 页面名称有一些快捷方式:
:re和:rename:重命名当前页面名称,如果目标页面存在,则合并页面内容。:undo和:redo:撤销和重做最后一次编辑。:lorem和:lorem-ipsum:在相同层级生成随机块,使用--unit word|paragraph|sentence改变随机块的单位。--unit有一个简写形式-u。word、paragraph和sentence也有简写形式w、p和s。- 同时支持
-p、-s、-w和--paragraph、--sentence、--word。
:emoji:通过搜索关键词插入表情符号,你可以在后面追加数字来重复表情符号。:emoji-picker:通过表情符号界面插入表情符号。:sort和rsort:在不聚焦任何块的情况下对页面的第一层级块进行排序,或者在聚焦一个块的情况下对子层级块进行排序。:bg [namedColor|hexColor]:设置块的背景颜色,支持多块选择。:bg-picker:触发颜色选择器来选择块的背景颜色,支持多块选择。:bg-random:随机设置块的背景颜色,支持多块选择。:bg-clear:清除块的背景颜色,支持多块选择。:copy-path:获取页面或日志的绝对路径,以便在 Logseq 之外进行编辑。:open-in-vscode:在 VSCode 中打开页面或日志。:w和:write:保存当前页面,实际上这是一个假操作,因为 Logseq 会自动保存。:wq:保存当前页面并退出 VIM 命令模式。:q和:quit:退出 VIM 命令模式。h和help:显示帮助信息弹窗。
大小写转换风格
1:在大写和小写之间切换,这是默认行为。2:转换为大写。例如LOGSEQ IS SO AWESOME。3:转换为小写。例如logseq is so awesome。4:转换为标题大小写。例如Logseq Is so Awesome。5:转换为句子大小写。例如Logseq is so awesome。6:转换为路径大小写。例如logseq/is/so/awesome。7:转换为大写首字母。例如Logseq Is So Awesome。8:转换为常量大小写。例如LOGSEQ_IS_SO_AWESOME。9:转换为点分大小写。例如logseq.is.so.awesome。10:转换为标题大小写。例如Logseq-Is-So-Awesome。11:转换为参数大小写。例如logseq-is-so-awesome。12:转换为帕斯卡大小写。例如LogseqIsSoAwesome。13:转换为驼峰大小写。例如logseqIsSoAwesome。14:转换为蛇形大小写。例如logseq_is_so_awesome。15:转换为交换大小写。例如lOGSEQ IS SO AWESOME。16:转换为随机大小写。例如logsEQ IS SO awESoME。
标记功能说明
- Logseq 已经有
Favorites和Recent功能,我们还有一个Tabs插件,标记功能有点像 Tabs 的位置,但它让你自己决定哪个是哪个,这让我感觉很好。 - 标记的页面和块可以自动持久化并单独保存。
- NUMBER 可以大于 10,实际上如果你愿意,可以是数千。
m快捷键可能会与Markmap插件冲突,所以如果你遇到这个问题,请将Markmap插件升级到最新版本。- NUMBER=1 是默认值,所以你可以直接按下
m来保存,按下'来加载标记 1。
本插件新增的斜杠命令
由于一些 VIM 快捷键或命令也需要作为斜杠命令使用,因此本插件提供了一些。
/Insert Emoji:在当前位置插入表情符号。/Sort Blocks:对子层级的子块按 a 到 z 排序。/Reverse Sort Blocks:对子层级的子块按 z 到 a 排序。/Random Bg Color:设置块的背景颜色。/Children Random Bg Color:设置子块的背景颜色。
命名背景颜色
在 :bg 命令中可以使用的命名颜色来自 这里。
页面内搜索
与 VIM 类似,按下 / 可以触发页面内搜索,它支持智能大小写匹配,这意味着如果你用小写搜索,它将不区分大小写匹配;如果你搜索的关键词包含大写字母,它将区分大小写匹配。
其他说明
- Logseq 的快捷键支持未来可能会发生变化,所以如果你需要,先用一段时间,它可能会与 Logseq 将来的快捷键冲突。
- 这些快捷键并不完全与 VIM 的快捷键相同,只是模仿。
- 如果你在日志主页上,一些快捷键会将你重定向到特定页面,因为目前没有 API 可以停留在日志主页并移动块的高亮行。
- 目前有些快捷键还不够完美,可能需要进一步改进,并且需要 Logseq 团队的一些支持。
- 可能很快会有更多快捷键推出。
- 敬请期待。
- 这里的复制并不意味着复制到系统剪贴板,只是在 Logseq 的内存中。
- VIM 滚动到顶部的快捷键是
gg,如果你需要,你可以将 Logseq 的 gg 快捷键改为另一个,并在插件设置的 JSON 文件中设置 gg。 - 一些快捷键支持类似 VIM 的组合操作,这意味着按下
N+action可以执行N次操作。 - 合并快捷键只能合并没有子块的兄弟块,并且在编辑模式下不应触发得太快。
- 跳转到内部页面支持组合操作来选择要跳转的页面。
- 所有操作都支持在设置 JSON 文件中进行多重键盘绑定。
mod在 Mac 上表示Cmd,在 Windows/Linux 上表示Ctrl。
如果你对这个插件感兴趣,可以去 Logseq 插件市场搜索使用。